<?php
    function flisol_admin($accion)
    {
        switch($accion)
        {
            case 'admin_instalaciones': return drupal_get_form('form_instalaciones_admin');
            case 'agregar_instalacion': return drupal_get_form('flisol_agregar_instalacion');
        }
    }
    
    /**
     * Formulario de administración de las instalaciones.
     */
    function form_instalaciones_admin()
    {
        $distros = "";
        
        $r = db_query("SELECT nombre FROM {distribuciones} ORDER BY nombre");
        if(db_affected_rows($r) > 0)
        {
            while($distro = db_fetch_array($r))
                $distros .= $distro['nombre'].',';
        }

        $form['distribuciones'] = array
        (
            '#description' => "Escribe en cada distribución separada por comas.",
            '#default_value' => $distros,
            '#required' => true,
            '#type' => 'textarea',
            '#title' => "Distribuciones permitidas",
        );
        
        $form['submit'] = array(
            '#type' => 'submit',
            '#value' => 'Enviar',
        );
        
        $form['distros_antes'] = array('#type'  => 'value',
                                       '#value' => $distros);
        
        return $form;
    }
    
    /**
     * Validación de los campos del formulario.
     */
    function form_instalaciones_admin_submit($id, &$datos)
    {
        $sql = "INSERT INTO {distribuciones} VALUES (NULL, '%s')";
        $distros_antes = explode(',', $datos['values']['distros_antes']);
        $errores = false;

        $distros = explode(',', $datos['values']['distribuciones']);
        foreach($distros as $id => $d)
        {
            if(!(in_array($d, $distros_antes)))
            {
                if(!db_query($sql, trim($d)))
                    $errores = true;
            }
        }

        if($errores)
            drupal_set_message("Error, al intentar actualizar las distribuciones.", 'error');
        else
            drupal_set_message("Distribuciones almacenadas correctamente.");
    }
    
    /**
     * Agregar una nueva instalación.
     */
    function flisol_agregar_instalacion()
    {
        $r = db_query("SELECT * FROM {distribuciones} ORDER BY nombre");
        $distros = array();
        while($distro = db_fetch_array($r))
            $distros[$distro['id_distro']] = $distro['nombre'];

        $form['distribuciones'] = array
        (
            '#description' => "Selecciona la distribución que vas a instalar",
            '#options' => $distros,
            '#required' => true,
            '#title' => "Distribución",
            '#type' => 'select',
        );
        
        $form['submit'] = array(
            '#type' => 'submit',
            '#value' => 'Agregar distribución',
        );
        
        return $form;
    }
?>